/*
 * @Author: pengtianrui 2276608413@qq.com
 * @Date: 2024-07-24 19:38:02
 * @LastEditors: 武兴创 superjava@vip.qq.com
 * @LastEditTime: 2024-08-28 17:43:19
 * @FilePath: \SGFEM\DataStructure\FEM\Element\include\CTETRAData.h
 * @Description: 定义 4 到 10 个栅格点连接的四面实体单元
 * CTETRA
 */

#pragma once
#include "DataStructure/Common/DataStructureNamespace.h"
#include "DataStructure/Common/Id.h"
#include "DataStructure/Input/Element/ElementBase.h"

SG_DATASTRUCTURE_FEM_NAMESPACE_OPEN
struct DECLSPEC CTETRAData : public ElementBase
{
    SG::DataStructure::Common::Id m_pId      = 0;      ///< property's id
    SG::DataStructure::Common::Id m_g[10]    = { 0 };  ///< nodes' id
    SG::DataStructure::Common::Id m_domainId = 0;

  protected:
    CTETRAData () = default;
    // 友元声明
    DB_CREATE_FRIEND ()
};

/// @brief 判断两个CTETRAData是否相等
/// @param a
/// @param b
/// @return
DECLSPEC bool operator== (const CTETRAData& a, const CTETRAData& b);

struct DECLSPEC CTETRA4Data : public CTETRAData
{};

struct DECLSPEC CTETRA10Data : public CTETRAData
{};
SG_DATASTRUCTURE_FEM_NAMESPACE_CLOSE
